#include "mirror_shader.hh"

using namespace std;
using namespace cgmath;

// mirror_shader::mirror_shader (const vector_3d& _diffuse)
//   : diffuse (_diffuse)
// {}

// in_dir points from source (e.g. light sample) to this point.
vector_3d mirror_shader::bsdf (const surface_point& point,
				const vector_3d&     in_dir,
				const vector_3d&  /* out_dir */)
{
  return vec (0.0, 0.0, 0.0);
}

/// Generate one sample that is reflection of the out going direction.
void mirror_shader::sample_bsdf (const surface_point& point,
                                 unsigned             num_samples,
                                 const vector_3d&     out_dir,
                                 bsdf_samples& samples)
{
  samples.resize (1);
  samples[0] = bsdf_sample (mirror_sample(point.normal, out_dir),
                            vec (1.0, 1.0, 1.0));
}
